package com.shujia.scala

object Demo6Class {
  def main(args: Array[String]): Unit = {
    //创建类的对象
    val user = new User("张三", 23)
    user.print()

    println(user)

    //多态：父类引用指向子类对象
    //再scala中所有类也是Object的子类
    val user1: Object = new User("李四", 24, "男")
    println(user1)

    //使用java中的类
    val user2 = new Demo7JavaUser("王五", 25, "男")
    println(user2)

  }

}

/**
 * 默认构造函数
 */
class User(name: String, age: Int) extends Object {

  println("默认构造函数")

  //_ 占位符，没有实际意义
  var _name: String = name
  var _age: Int = age
  var _gender: String = _

  /**
   * 重载构造函数、
   */
  def this(name: String, age: Int, gender: String) {
    //重载构造函数需要再第一行显示调用默认构造函数
    this(name, age)
    //给其它属性赋值
    this._gender = gender
  }


  //再类中定义方法
  def print(): Unit = {
    println(s"${_name}\t${_age}")
  }

  /**
   * 重写父类方法
   */
  override def toString: String = s"User(${_name},${_age},${_gender})"


}
